﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
        /*    一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
    请编写相关代码，
    1、捕获FormatException异常，并打印输出“异常已处理；
    2、捕获OverflowException异常，数值超出float范围的异常，并打印输出“异常已处理；
    3、捕获一般异常Exception异常。
    4、最终处理finally
    录入成绩结束后，请输出，总学生数，总分数，平均分。*/
            static List<float> scores = new List<float>();
            static void Main(string[] args)
            {
                addScore();
                float sum = 0;
                foreach (float d in scores)
                {
                    sum += d;
                }
                Console.WriteLine($"总学生数:{scores.Count},总分数{sum}，平均分{sum / scores.Count()}。");
            }

            static void addScore()
            {
                for (int i = 0; ; i++)
                {
                    while (true)
                    {
                        Console.WriteLine($"请输入第{i + 1}个考生成绩,按e结束");
                        string s = Console.ReadLine();
                        if (s == "e")
                        {
                            Console.WriteLine("结束输入");
                            return;
                        }
                        try
                        {
                            float score = float.Parse(s);
                            scores.Add(score);
                            break;
                        }
                        catch (FormatException f)
                        {
                            Console.WriteLine(f.Source);
                            Console.WriteLine(f.StackTrace);
                            Console.WriteLine(f.Message);
                            Console.WriteLine("异常已处理");
                        }
                        catch (OverflowException o)
                        {
                            Console.WriteLine(o.Source);
                            Console.WriteLine(o.StackTrace);
                            Console.WriteLine(o.Message);
                            Console.WriteLine("异常已处理");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Source);
                            Console.WriteLine(e.StackTrace);
                            Console.WriteLine(e.Message);
                            Console.WriteLine("异常已处理");
                        }
                        finally
                        {

                        }

                    }
                }
            }


        }
    }
